package com.shujia.common_.nine;


import org.junit.Test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexTest {

    /*
    已知字符串数组，循环遍历数组，使用正则匹配子串，替换匹配的子串为目标字符串。
    数组数据见备注
    正则re\\w*
     */
    @Test
    public void test3() {
        String[] msgs = {"Java has regular expressions in 1.4",
                "regular expressions now expressing in Java",
                "Java represses oracular expressions"};
        Pattern p = Pattern.compile("re\\w*");
        Matcher m = null;

        for (String msg : msgs) {
            if (m == null) {
                m = p.matcher(msg);
            } else {
                // reset()：将现有的 Matcher对象应用于一个新的字符序列
                m.reset(msg);
            }
            // 不会改变原来的字符串, 需要重新接收
            String result = m.replaceAll("数加");
            System.out.println(result);
        }


    }


    /*
    把字符串“java is very easy！”使用空格分割，在控制台打印分割后的字符串；并打印每个子串的下标。

     */
    @Test
    public void test2() {
        String str = "java is very easy！";
//        str.split(" ")
        String regex = "\\w+";
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(str);

        while (m.find()) {
            String group = m.group();
            System.out.println(group);
            System.out.println(m.start());
            System.out.println(m.end());
        }

    }

    /*
    ，已知字符串数组，循环遍历数组，判断每个元素是否满足邮箱格式并打印结果。
        判断邮箱正则： "\\w{3,20}@\\w+\\.(com|org|cn|net)"
        判断每个元素是否以邮箱格式开头并打印结果。

     */
    @Test
    public void test1() {
        String[] arr = {"aaa@qq.com", "bbbb@163.org___", "cccc@ww.cn1111", "asdfasdfa", "1111@tt.net"};
        String regex = "\\w{3,20}@\\w+\\.(com|org|cn|net)";

        Pattern p = Pattern.compile(regex);
        Matcher m = null;

        for (String mail : arr) {
            if (m == null) {
                m = p.matcher(mail);
            } else {
                // reset()：将现有的 Matcher对象应用于一个新的字符序列
                m.reset(mail);
            }
            boolean flag = m.matches();
            System.out.println(mail + (flag ? "符号格式要求" : "不符号格式要求"));
            flag = m.lookingAt();
            System.out.println(mail + (flag ? "以邮箱格式开头" : "不以邮箱格式开头"));
        }

    }
}
